package com.zimmur.app.mocolink.service;

import java.security.AllPermission;

import com.zimmur.app.mocolink.domain.form.ApplyRefundForm;
import com.zimmur.app.mocolink.domain.form.RefundExpress;
import com.zimmur.app.mocolink.domain.model.Order;
import com.zimmur.app.mocolink.domain.model.RefundOrder;
import com.zimmur.app.mocolink.domain.param.RefundParam;
import com.zimmur.app.mocolink.domain.util.PageUtil;
import com.zimmur.app.mocolink.domain.vo.RefundOrderInfo;
import com.zimmur.app.mocolink.domain.vo.RefundOrderVo;
import com.zimmur.app.mocolink.domain.vo.RefundOrderVoForManage;

public interface IRefundOrderService {
	/**
	 * 按用户Id分页查询售后单
	 *@Description
	 *@param userId
	 *@param pageNo
	 *@return 
	 *@author zcx
	 *@Time 2017年10月16日 下午4:59:34
	 */
	PageUtil<RefundOrderVo> selectByUserId(Integer userId,Integer pageNo);
	/**
	 * 创建售后单
	 *@Description
	 *@param userId
	 *@param refundInfo 退货信息 订单明细ID+","+退货数量+";"
	 *@param summary 问题描述
	 *@param order 订单信息
	 *@return  -1数据异常，-2退货数量大于购买数量
	 *@author zcx
	 *@Time 2017年10月16日 下午5:14:58
	 */
	int addRefundOrder(Integer userId,String refundInfo,String summary,Order order);
	/**
	 * 条件查询
	 *@Description
	 *@param param
	 *@return 
	 *@author zcx
	 *@Time 2017年10月27日 上午10:28:26
	 */
	PageUtil<RefundOrderInfo> selectByParam(RefundParam param);
	/**
	 * （管理后台） 申请售后
	 *@Description
	 *售后逻辑:1.付款未发货：订单状态-完成,售后状态-待退款;
	 *       2.付款已发货：不改变订单状态,售后状态-待审核;
	 *@param form
	 *@return  -1 订单状态不正确或订单明细不存在，-2 退货数大于购买数
	 *@author zcx
	 *@Time 2017年10月28日 上午11:50:53
	 */
	int saveRefundInfo(ApplyRefundForm form);
	/**
	 * 审核订单
	 *@Description
	 *@param refundId
	 *@param status 1=审核通过，-1=取消审核
	 *@param adminName
	 *@return 
	 *@author zcx
	 *@Time 2017年10月30日 上午9:47:13
	 */
	int checkRefund(Integer refundId,Integer status,String adminName);
	/**
	 * 保存退货物流信息
	 *@Description
	 *@param express
	 *@return  -1 售后单不存在
	 *@author zcx
	 *@Time 2017年10月30日 上午9:50:24
	 */
	int saveRefundExpress(RefundExpress express);
	/**
	 * 记录售后收货数量
	 *@Description
	 *@param refundId
	 *@param refundInfos detailId+","+signQuantity+";"
	 *@return -1 售后单信息有误
	 *@author zcx
	 *@Time 2017年10月30日 上午9:52:43
	 */
	int saveRefundGoods(Integer refundId,String refundInfos);
	/**
	 * 退货
	 *@Description
	 *@param refundId
	 *@param money
	 *@return  -1 售后单数据异常，-2 售后单对应的订单不存在，-3退款金额大于付款金额
	 *@author zcx
	 *@Time 2017年10月30日 上午9:54:10
	 */
	int refundMoney(Integer refundId,Double money,String adminName);
	/**
	 * 查询详细信息
	 *@Description
	 *@param refundId
	 *@return 
	 *@author zcx
	 *@Time 2017年10月30日 上午10:07:37
	 */
	RefundOrderVoForManage selectDetailById(Integer refundId);
	/**
	 * 主键查询
	 *@Description
	 *@param refundId
	 *@return 
	 *@author zcx
	 *@Time 2017年10月30日 下午3:19:14
	 */
	RefundOrder selectById(Integer refundId);
	/**
	 * 保存售后单
	 *@Description
	 *@param refundId
	 *@param remark
	 *@param deleteIds 删除的售后明细ID
	 *@param detailInfos 售后明细ID+","+数量+";"
	 *@param adminUser
	 *@return -1售后单不存在，-2 退货数量小于已签收数量，-3 退货数量大于购买数量
	 *@author zcx
	 *@Time 2017年10月31日 上午10:17:59
	 */
	int saveRefund(Integer refundId,String remark,String deleteIds,String detailInfos,String adminUser);
}
